package com.hnu.tockmarket.activity;

import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;

import com.hnu.tockmarket.R;
import com.hnu.tockmarket.adapter.GuideAdapter;

import java.util.ArrayList;
import java.util.List;

/**
 * 用户引导页面对应的活动
 *
 * @author hnulht
 * @since 2021-07-07
 */
public class GuideActivity extends AppCompatActivity {

    private static final String TAG = "GuideActivity"; // 日志
    private ViewPager viewPager; // 引导页面视图翻页工具
    private List<ImageView> imageViewList; // 图像视图列表
    private int[] imageList = {R.mipmap.guide_image_1, R.mipmap.guide_image_2, R.mipmap.guide_image_3}; // 引导界面图片列表
    private Button buttonHome; // 进入首页按钮
    private Button buttonLoginRegister; // 登录/注册按钮
    private ImageView[] dotViewList; // 底部圆点指示器视图列表
    private GuideAdapter guideAdapter; // 引导页面适配器

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); // 调用父类onCreate()方法
        setContentView(R.layout.activity_guide); // 给引导页面活动加载对应的布局
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); // 隐藏状态栏
        initView(); // 初始化视图
    }

    /**
     * 初始化视图
     */
    private void initView() {
        initImageList(); // 初始化图像视图列表
        initDots(); // 初始化底部圆点指示器

        // 定位进入首页按钮并设置点击事件
        buttonHome = findViewById(R.id.guide_home_btn);
        buttonHome.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 存储用户是否首次启动APP的记录
                SharedPreferences.Editor editor = getSharedPreferences("first_boot_data", MODE_PRIVATE).edit();
                editor.putString("isFirst", "1");
                editor.apply();
                // 跳转到系统首页并销毁引导页面
                Intent intent = new Intent(GuideActivity.this, MainActivity.class);
                startActivity(intent);
                finish();
            }
        });

        // 定位登录/注册按钮并设置点击事件
        buttonLoginRegister = findViewById(R.id.guide_login_register_btn);
        buttonLoginRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 跳转到系统主页
                Intent intent = new Intent(GuideActivity.this, LoginActivity.class);
                startActivity(intent);
                finish(); // 销毁引导界面
            }
        });

        viewPager = findViewById(R.id.guide_vp); // 定位引导页面视图翻页工具
        guideAdapter = new GuideAdapter(imageViewList); // 初始化引导页面适配器
        viewPager.setAdapter(guideAdapter);
        // 随着页面滑动指示器移动
        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                for (int i = 0; i < dotViewList.length; i++) {
                    // 滑动到页面指示器变色
                    if (position == i) {
                        dotViewList[i].setImageResource(R.drawable.guide_blue_circle);
                    } else {
                        dotViewList[i].setImageResource(R.drawable.guide_gray_circle);
                    }
                    // 滑动到最后一个登录/注册和进入首页按钮显示
                    if (position == dotViewList.length - 1) {
                        buttonHome.setVisibility(View.VISIBLE);
                        buttonLoginRegister.setVisibility(View.VISIBLE);
                    } else {
                        buttonHome.setVisibility(View.GONE);
                        buttonLoginRegister.setVisibility(View.GONE);
                    }
                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    }

    /**
     * 初始化图像视图列表
     */
    private void initImageList() {
        ViewPager.LayoutParams layoutParams = new ViewPager.LayoutParams();
        imageViewList = new ArrayList<>();
        for (int i = 0; i < imageList.length; i++) {
            ImageView imageView = new ImageView(this);
            imageView.setLayoutParams(layoutParams);
            imageView.setImageResource(imageList[i]);
            imageView.setScaleType(ImageView.ScaleType.FIT_XY);
            imageViewList.add(imageView);
        }
    }

    /**
     * 初始化底部圆点指示器
     */
    private void initDots() {
        LinearLayout layout = findViewById(R.id.guide_ll); // 定位线性布局
        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(20, 20);
        layoutParams.setMargins(10, 0, 10, 0);
        dotViewList = new ImageView[imageList.length];
        for (int i = 0; i < imageViewList.size(); i++) {
            ImageView imageView = new ImageView(this);
            imageView.setLayoutParams(layoutParams);
            // 第一个页面指示器变色
            if (i == 0) {
                imageView.setImageResource(R.drawable.guide_blue_circle);
            } else {
                imageView.setImageResource(R.drawable.guide_gray_circle);
            }
            dotViewList[i] = imageView;
            final int current = i;
            dotViewList[i].setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    viewPager.setCurrentItem(current);
                }
            });
            layout.addView(imageView);
        }
    }

}